package com.niit.blog.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.github.pagehelper.PageInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

//这个配置类的作用是配置MyBatis Plus的一些插件和拦截器。
//
//具体来说，这段配置代码创建了一个名为mybatisPlusInterceptor()的Bean，它返回一个MybatisPlusInterceptor对象。MybatisPlusInterceptor是MyBatis Plus提供的拦截器，可以在执行SQL语句前后进行一些自定义的操作。
//
//该配置类中添加了两个内部拦截器：
//
//PaginationInnerInterceptor：用于实现分页功能，可以自动拦截并处理分页查询的SQL语句。
//MybatisPlusAllSqlLog：用于打印MyBatis Plus执行的所有SQL语句的日志，方便开发过程中的调试和性能分析。
//通过将这些拦截器添加到MybatisPlusInterceptor中，可以在应用程序中使用分页功能和记录SQL日志。
//
//此配置类需要与Spring Boot应用程序一起使用，通常会在主配置类（如@SpringBootApplication标注的类）所在的包或子包中扫描到。然后，Spring容器会自动将其实例化并应用到MyBatis Plus的配置中。
//
//总之，这个配置类对MyBatis Plus进行了一些常用的配置和扩展，以提供更方便的数据库操作和调试支持。
@Configuration
public class MPConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        mybatisPlusInterceptor.addInnerInterceptor(new MybatisPlusAllSqlLog());
        return mybatisPlusInterceptor;
    }
    @Bean
    public PageInterceptor pageInterceptor() {
        PageInterceptor pageInterceptor = new PageInterceptor();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql"); // 设置数据库方言
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
    }

}
